Intelligent routing framework

ABSTRACT

A method comprises receiving at least one natural language input corresponding to at least one task, and analyzing the at least one natural language input using one or more machine learning models to determine one or more parameters of the at least one task. One or more skills and/or availabilities of respective ones of a plurality of resources are identified. The method further comprises identifying at least a subset of the plurality of resources to perform the at least one task based at least in part on the one or more parameters and on the one or more skills and/or the availabilities. The at least one task is routed to one or more resources of the subset.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

FIELD

The field relates generally to information processing systems, and moreparticularly to a framework for assignment of tasks to resources in suchinformation processing systems.

BACKGROUND

Organizations generate a significant amount of work based on variousorganizational activities. The work is typically performed by resourcesfrom, for example, resource pools, wherein the resources have varyingskill levels. The work performed by the resources may include varioustasks performed for customers or other users of the organization.

Conventional techniques for assigning resources to performorganizational tasks lack efficiency and fail to adequately account foravailability and skills of the resources, resulting in delays, errorsand unwanted costs.

SUMMARY

Illustrative embodiments provide techniques to use machine learning toassign tasks to resources.

In one embodiment, a method comprises receiving at least one naturallanguage input corresponding to at least one task, and analyzing the atleast one natural language input using one or more machine learningmodels to determine one or more parameters of the at least one task. Oneor more skills and/or availabilities of respective ones of a pluralityof resources are identified. The method further comprises identifying atleast a subset of the plurality of resources to perform the at least onetask based at least in part on the one or more parameters and on the oneor more skills and/or the availabilities. The at least one task isrouted to one or more resources of the sub set.

Further illustrative embodiments are provided in the form of anon-transitory computer-readable storage medium having embodied thereinexecutable program code that when executed by a processor causes theprocessor to perform the above steps. Still further illustrativeembodiments comprise an apparatus with a processor and a memoryconfigured to perform the above steps.

These and other features and advantages of embodiments described hereinwill become more apparent from the accompanying drawings and thefollowing detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts details of an information processing system with anintelligent routing framework for analyzing incoming tasks and routingthe tasks to resources according to an illustrative embodiment.

FIG. 2 depicts details of an operational flow for analyzing incomingtasks and routing the tasks to resources according to an illustrativeembodiment.

FIG. 3 depicts a table including details of intent training dataaccording to an illustrative embodiment.

FIG. 4 depicts details of an operational flow for intent classificationaccording to an illustrative embodiment.

FIG. 5 depicts example pseudocode for intent analysis and classificationaccording to an illustrative embodiment.

FIG. 6 depicts details of an operational flow for task profilingaccording to an illustrative embodiment.

FIG. 7 depicts example pseudocode for task profiling according to anillustrative embodiment.

FIG. 8 depicts details of an operational flow for analyzing incomingtasks and routing the tasks to resources according to an illustrativeembodiment.

FIG. 9 depicts a process for analyzing incoming tasks and routing thetasks to resources according to an illustrative embodiment.

FIGS. 10 and 11 show examples of processing platforms that may beutilized to implement at least a portion of an information processingsystem according to illustrative embodiments.

DETAILED DESCRIPTION

Illustrative embodiments will be described herein with reference toexemplary information processing systems and associated computers,servers, storage devices and other processing devices. It is to beappreciated, however, that embodiments are not restricted to use withthe particular illustrative system and device configurations shown.Accordingly, the term “information processing system” as used herein isintended to be broadly construed, so as to encompass, for example,processing systems comprising cloud computing and storage systems, aswell as other types of processing systems comprising variouscombinations of physical and virtual processing resources. Aninformation processing system may therefore comprise, for example, atleast one data center or other type of cloud-based system that includesone or more clouds hosting tenants that access cloud resources. Suchsystems are considered examples of what are more generally referred toherein as cloud-based computing environments. Some cloud infrastructuresare within the exclusive control and management of a given enterprise,and therefore are considered “private clouds.” The term “enterprise” asused herein is intended to be broadly construed, and may comprise, forexample, one or more businesses, one or more corporations or any otherone or more entities, groups, or organizations. An “entity” asillustratively used herein may be a person or system. On the other hand,cloud infrastructures that are used by multiple enterprises, and notnecessarily controlled or managed by any of the multiple enterprises butrather respectively controlled and managed by third-party cloudproviders, are typically considered “public clouds.” Enterprises canchoose to host their applications or services on private clouds, publicclouds, and/or a combination of private and public clouds (hybridclouds) with a vast array of computing resources attached to orotherwise a part of the infrastructure. Numerous other types ofenterprise computing and storage systems are also encompassed by theterm “information processing system” as that term is broadly usedherein.

As used herein, “real-time” refers to output within strict timeconstraints. Real-time output can be understood to be instantaneous oron the order of milliseconds or microseconds. Real-time output can occurwhen the connections with a network are continuous and a user devicereceives messages without any significant time delay. Of course, itshould be understood that depending on the particular temporal nature ofthe system in which an embodiment is implemented, other appropriatetimescales that provide at least contemporaneous performance and outputcan be achieved.

As used herein, “natural language” is to be broadly construed to referto any language that has evolved naturally in humans. Non-limitingexamples of natural languages include, for example, English, Spanish,French and Hindi.

As used herein, “natural language processing (NLP)” is to be broadlyconstrued to refer to interactions between computers and human (natural)languages, where computers are able to derive meaning from human ornatural language input, and respond to requests and/or commands providedby a human using natural language.

As used herein, “natural language understanding (NLU)” is to be broadlyconstrued to refer to a sub-category of natural language processing inartificial intelligence (AI) where natural language input isdisassembled and parsed to determine appropriate syntactic and semanticschemes in order to comprehend and use languages. NLU may rely oncomputational models that draw from linguistics to understand howlanguage works, and comprehend what is being said by a user.

In an illustrative embodiment, machine learning (ML) techniques are usedto classify various tasks (also referred to herein as “work items”), andto identify and assign resources to perform the tasks based on variousparameters. For example, using one or more ML models, skills andcertification data, historical data including, for example, case andincident history, and project statuses are analyzed to accurately matchavailable and suitable resources with work items in a complex enterpriseenvironment. Advantageously, the embodiments use natural languageunderstanding (NLU), neural networks and one or more statistical routingalgorithms to provide a universal solution for dynamic assignment ofresources, without requiring multiple resource assignment tools andrules engines. The embodiments provide techniques for managing resourcesin a centralized system, thus allowing for resource optimization acrossan enterprise.

FIG. 1 shows an information processing system 100 configured inaccordance with an illustrative embodiment. The information processingsystem 100 comprises user devices 102-1, 102-2, . . . 102-M(collectively “user devices 102”) and resources 103-1, 103-2, . . .103-P (collectively “resources 103”). The user devices 102 and resources103 communicate over a network 104 with each other and with anintelligent routing framework 110.

The user devices 102 can comprise, for example, Internet of Things (IoT)devices, desktop, laptop or tablet computers, mobile telephones,landline telephones or other types of processing devices capable ofcommunicating with the intelligent routing framework 110 over thenetwork 104. Such devices are examples of what are more generallyreferred to herein as “processing devices.” Some of these processingdevices are also generally referred to herein as “computers.” The userdevices 102 may also or alternately comprise virtualized computingresources, such as virtual machines (VMs), containers, etc. The userdevices 102 in some embodiments comprise respective computers associatedwith a particular company, organization or other enterprise.

The resources 103 can comprise, for example, human agents, virtualagents and/or combinations of human and virtual agents capable ofperforming one or more tasks. The resources 103 may also comprise, forexample, software applications, hardware and/or combinations of softwareapplications and hardware configured to perform one or more tasks. Asexplained further herein, different resources 103 have different skillsets and/or proficiencies and may be more suitable for performingcertain tasks requiring their skill sets and/or proficiencies than otherresources 103 not having the skills and/or proficiencies needed for agiven task. In an example embodiment, some resources 103 may comprisechatbots or other software applications that can be used to conductonline conversations with users via text or speech to complete one ormore tasks, in lieu of providing direct contact with a live human agent.The chatbots simulate a conversational partner, and may be used inconnection with, for example, information acquisition, user queries,customer service, technical support and request routing. The chatbotsmay be executed on one or more processing devices or virtualizedcomputing resources. Alternatively, the resources may comprise a livehuman agent for users to interact and/or converse with in order tocomplete tasks. The variables M and P and other similar index variablesherein such as K, L, N, S and R are assumed to be arbitrary positiveintegers greater than or equal to two.

As used herein, the terms “task” or “work item” are to be broadlyconstrued to refer to, for example, any jobs or undertakings performedby an enterprise or other organization on behalf of a customer, patronor other enterprise user. Tasks and/or work items can include, but arenot necessarily limited to, support and/or service requests,installation orders, deployment orders, configuration services, helpdesk orders, technical support items, human resources support itemsand/or customer relationship management (CRM) items. Although someexamples herein are discussed in terms of customer support scenarios andrelated tasks, the embodiments are not limited thereto and may beapplied to different scenarios and or tasks performed on behalf of usersassociated with an enterprise or other organization.

The terms “client,” “customer” or “user” herein are intended to bebroadly construed so as to encompass numerous arrangements of human,hardware, software or firmware entities, as well as combinations of suchentities. Intelligent conversation services may be provided for usersutilizing one or more machine learning models, although it is to beappreciated that other types of infrastructure arrangements could beused. At least a portion of the available services and functionalitiesprovided by the intelligent routing framework 110 in some embodimentsmay be provided under Function-as-a-Service (“FaaS”),Containers-as-a-Service (“CaaS”) and/or Platform-as-a-Service (“PaaS”)models, including cloud-based FaaS, CaaS and PaaS environments.

Although not explicitly shown in FIG. 1 , one or more input-outputdevices such as keyboards, displays or other types of input-outputdevices may be used to support one or more user interfaces to theintelligent routing framework 110, as well as to support communicationbetween the intelligent routing framework 110 and connected devices(e.g., user devices 102) and/or other related systems and devices notexplicitly shown.

In some embodiments, the user devices 102 are assumed to be associatedwith repair technicians, system administrators, information technology(IT) managers, software developers release management personnel or otherauthorized personnel configured to access and utilize the intelligentrouting framework 110.

The intelligent routing framework 110 in the present embodiment isassumed to be accessible to the user devices 102, and vice-versa, overthe network 104. In addition, the intelligent routing framework 110 andthe user devices 102 can access the virtual assistants 103 over thenetwork 104. The network 104 is assumed to comprise a portion of aglobal computer network such as the Internet, although other types ofnetworks can be part of the network 104, including a wide area network(WAN), a local area network (LAN), a satellite network, a telephone orcable network, a cellular network, a wireless network such as a WiFi orWiMAX network, or various portions or combinations of these and othertypes of networks. The network 104 in some embodiments thereforecomprises combinations of multiple different types of networks eachcomprising processing devices configured to communicate using InternetProtocol (IP) or other related communication protocols.

As a more particular example, some embodiments may utilize one or morehigh-speed local networks in which associated processing devicescommunicate with one another utilizing Peripheral Component Interconnectexpress (PCIe) cards of those devices, and networking protocols such asInfiniBand, Gigabit Ethernet or Fibre Channel. Numerous alternativenetworking arrangements are possible in a given embodiment, as will beappreciated by those skilled in the art.

The intelligent routing framework 110, on behalf of respectiveinfrastructure tenants each corresponding to one or more usersassociated with respective ones of the user devices 102, provides aplatform for matching resources with enterprise tasks based on aplurality of factors including, for example, skills, availability, taskpriority and other dynamic dimensions.

Referring to FIG. 1 , the intelligent routing framework 110 comprises anassignment workflow layer 120, an intent classification engine 130, aprofile engine 140, a data repository 150, a supporting attributesengine 160 and a matching and routing engine 170. The intentclassification and profile engines 130 and 140 each include a machinelearning (ML) layer 133 and 143, respectively. The intelligent routingframework 110 assigns tasks to individual resources 103 or to pools ofresources 103. The framework 110 uses configurable statisticalalgorithms and a variety of parameters including, but not necessarilylimited to, intent, skills, proficiency, availability, task type, taskurgency, task severity, etc. to assign work items to the mostappropriate resources. The parameters considered for resource assignmentare dynamic and configurable, so that the framework 110 can change overtime and respond to real-time modifications to work with differentresource types and situations.

The intent classification engine 130 uses one or more machine learningalgorithms to identify the intent of a task to determine the issuesand/or work that a user is facing when initiating a communication abouta given matter and inputting a work item request to the intelligentrouting framework 110. The profile engine 140 uses one or more machinelearning algorithms to analyze historical task data from the datarepository 150 to identify, for example, a type of task, the skillsneeded to perform the task, task urgency and task severity. Thesupporting attributes engine 160 identifies supporting attributesassociated with the tasks, such as, for example, language, region,country, etc., which may be needed for routing a task to an appropriateone of the resources 103. Based on inputs from the intent classificationengine 130, the profile engine 140 and the supporting attributes engine160, the matching and routing engine 170 applies a configurablestatistical routing algorithm to identify and match resources with workitems.

In more detail, referring to FIGS. 1 and 2 , tasks 202-1, 202-2, 202-3,202-4, 202-5 . . . 202-R (collectively “tasks 202”) are input to theintent classification engine 230, profile engine 240, supportingattributes engine 260 and matching and routing engine 270 of anintelligent routing framework. In the operational flow 200, the intentclassification engine 230, profile engine 240, supporting attributesengine 260 and matching and routing engine 270 may be the same orsimilar to the intent classification engine 130, profile engine 140,supporting attributes engine 160 and matching and routing engine 170 ofan intelligent routing framework 110. The tasks 202 may originate from aplurality of channels accessible to users via, for example, user devices102 connected to the intelligent routing framework via network(s) 104.The channels may include, for example, online chat, voice, web-to-case,social media and/or email or other messaging channels (e.g.,short-message-service (SMS)). Voice channels can be accessed via, forexample, mobile or landline telephones, and web-to-case channels maycomprise, for example, online forms (e.g., service requests) completedby users and sent to the framework 110. Social media channels maycomprise social media sites (e.g., Facebook, Twitter, Yelp, etc.) fromwhich the routing framework 110 may receive or pull data.

The inputted tasks are received via an assignment workflow layer 120,which acts as an input/output interface layer to receive incomingrequests (e.g., tasks 202) and output task assignments to the resources103. The assignment workflow layer 120 provides interfaces for users 202to access the intelligent routing framework 110 via one or more of thechannels. The assignment workflow layer 120 receives and processesincoming requests comprising one or more tasks 202 from users 102 (e.g.,via user devices 102). The requests comprise natural language inputscomprising, for example, statements, queries, requests for services(e.g., information technology (IT), human resources (HR)) requests),requests for documents, requests for help/support, requests forinformation, requests for status, and other types of requests orstatements. Some examples of requests are shown in FIG. 3 (e.g., “Mylaptop gives me a blue screen” (e.g., Blue Screen of Death (BSOD)),“Need a project manager for enterprise storage installation anddeployment” and “Need a development resource for the monitoringproject”). The assignment workflow layer 120 comprises one or moreapplication programming interfaces (APIs) to interface with the channelsand different elements of the intelligent routing framework 110. Theassignment workflow layer 120 facilitates interactions between devicesof multiple types (e.g., physical, virtual, mobile, desktop) throughmultiple mediums (e.g., web, cellular, satellite, etc.).

Referring to FIGS. 1, 2 and 4 , the intent classification engine 130(which is the same or similar to the intent classification engines 230and 430) uses NLU and neural networks to analyze incoming dialogscomprising task descriptions 402 to classify task intent. The intentclassification engine 130/230/430 is part of the pre-processing stepsfor a task assignment workflow to assemble input parameters for thematching and routing engine 170/270. In some cases, task intent may notbe clearly specified in a dialog, requiring analysis by the intentclassification engine 130/230/430 to derive the intent from a workitem/task description.

Considering a message comprising a work item is very similar to a timeseries model where the words come one after another over a period oftime, the embodiments base an incoming dialog on a time series model,and leverage a Recurrent Neural Network (RNN). In order to efficientlyanalyze a message, the embodiments use a bi-directional RNN, which usestwo separate processing sequences, one from left to right and anotherfrom right to left. In order to address RNNs having exploding orvanishing gradient issues for longer and complex dialogs or messages,the embodiments utilize a bi-directional RNN with long short-term memory(LSTM) for the NLU.

The machine learning model used by the ML layer 133 (or ML layer 433) isa bi-directional with LSTM model. Unlike a traditional neural network,where input and output are independent, in an RNN the output from aprevious step feeds into the input of a current step. As a result, whenperforming language processing, previous words are taken into accountwhen predicting subsequent words of a sentence. An RNN includes a hiddenstate which remembers one or more words in the sentence. Thebi-directional RNN of the embodiments performs bi-directional processingof a sentence (from past and from future in two directions in parallel).A bi-directional RNN addresses problems where sentences are too long,and some previous words in the sentence are not available due to limitedhidden states. In addition, LSTM utilized by the embodiments introducesadvanced memory units and gates to an RNN to improve accuracy andperformance of the machine learning model.

Referring to the operational flow 400 in FIG. 4 , intent analysis by theintent classification engine 430 (or intent classification engine 130 or230) uses intent corpus data 436 to train the machine learning model.This corpus data contains words and/or phrases and the correspondingintent associated with each of the words and/or phrases. A small sampleof the intent corpus data used to train the machine learning model isshown in the table 300 in FIG. 3 . Referring to the table 300, naturallanguage dialog samples are shown as corresponding to intents related torequests for support or assistance (“support.assist.consumer”),(“service.enterprise.install”) and (“it.development.project”). Thetraining data is input to the training component 434 of the ML layer 433to train the machine learning model.

According to an embodiment, a pre-processing component 431 cleans anyunwanted characters and stop words from the corpus data. Thepre-processing further comprises stemming and lemmatization, as well aschanging text to lower case, removing punctuation, and removingincorrect or unnecessary characters. Once pre-processing and datacleanup is performed, the feature engineering component 432 tokenizesthe input list of words in the sentences and/or phrases. Tokenizationcan be performed using, for example, a Keras library or a naturallanguage toolkit (NLTK) library. A Keras tokenizer class can be used toindex the tokens. After tokenization is performed, the resulting wordsare padded to make the words have equal lengths so that the words can beused in the machine learning model. A list of intents is indexed and fedinto the machine model for training. The intents may be one-hot encodedbefore being input to the model. Some features and/or parameters used inconnection with the creation of the bi-directional RNN with LSTM modelinclude an Adam optimizer, Softmax activation function, batch size and anumber of epochs. These parameters or features are tuned to get the bestperformance and accuracy of the model. After the model is trained withthe intent corpus training data, the model is used to predict the intentfor incoming dialogs and/or messages. The accuracy of the model iscalculated for hyperparameter tuning.

Referring to the operational flow 400 for intent classification in FIG.4 , an inputted task description 402 (e.g., a natural language input) ispre-processed and engineered by the pre-processing and featureengineering components 431 and 432, and then input to the ML layer 433(also ML layer 133 in FIG. 1 ) so that intent can be classified (e.g.,by the classification component 435) using the trained machine learningmodel to generate predicted intents 438-1, 438-2, 438-3 (collectively“predicted intents 438”). Some non-limiting examples of predictedintents include, for example, support/assistance, service/installationand IT development project, which can be outputs of the operational flow400. Although three predicted intents are shown in FIG. 4 , theembodiments are not necessarily limited thereto, and more or lesspredicted intents can be generated in connection with a given taskdescription.

FIG. 5 depicts example pseudocode 500 for intent analysis andclassification according to an illustrative embodiment. For theimplementation of the intent classification engine 130/230/430, Pythonlanguage and NumPy, Pandas, Keras and NLTK libraries can be used.According to an embodiment, the ML layer 133/433 has a plurality ofneurons in the output layer corresponding to the number of intenttypes/classes being tested.

Referring to FIGS. 1, 2 and 6 , the profile engine 140 (which is thesame or similar to the profile engine 240 and 640), determines, forexample, the type of a task, skills and proficiency needed to completethe task, the severity of the task and the urgency of the task. Forexample, a task corresponding to a request to fix an unresponsive devicerequires different skills and has different urgency than a taskrequesting developers having a specific computer language expertise tocomplete a project. In addition, there may be multiple complex skillswith variable proficiency levels. The profile engine 140/240/640recommends skills for a given task based on skills used for past tasksthat were successfully completed. Such data for past tasks is stored inthe data repository 150. Similarly, the urgency and severity of a taskcan be derived from historical data, such as, for example, from thenumber of occurrences of the same problem in the historical work itemsand the time in which those work items were completed. For example,multiple occurrences of a task that have been resolved may signify acommon problem that is less severe and/or urgent. In another example,relatively fast turn-around times to complete historical tasks mayindicate that such tasks were more urgent than tasks with longerturn-around times to complete the tasks.

Considering the amount and dimensions of data and skills, the profileengine 140/240/640 uses one or more machine learning models to identifytask profiles. The historical data is received from the data repository150 comprising, for example, historical case resolution and projectdata, which is used for training the machine learning model used by theprofile engine 140/240/640.

In or more embodiments, the profile engine 140/240/640 utilizes acontent-based filtering and recommendation algorithm to match anincoming one of the tasks 202 (also task description 602 in FIG. 6 )with similar tasks from the historical data and predict the recommendedskills necessary for the successful fulfillment of the task, as well asthe type, urgency and severity of a given task. For example, in the caseof a technical support matter, the profile engine 140/240/640 predictsthe skills needed, task type, urgency and severity based on the skillsused, task type, number of occurrences and time taken for pastresolutions. In another example, in the case of installation projects,the profile engine 140/240/640 recommends the skills needed for thesuccessful completion of the project based on the skills needed tocomplete the same or similar projects in the historical data, andpredicts the project type, urgency and severity based on the task type,number of occurrences and time taken for the same or similar projects inthe historical data. The content-based recommendation techniques used bythe embodiments use attributes of the stored content (e.g., historicalcase data and historical incident data associated with similarconfigurations and issues) to predict similar profiles.

Referring to the operational flow 600 in FIG. 6 , in training a machinelearning model used by the profile engine 640, the historical task data646 from a data repository (e.g., data repository 150) is input to atraining component 644 of the ML layer 643 (which is the same or similarto the ML layer 143 in FIG. 1 ). The historical task data 646 comprises,for example, historical case resolution data and historical projectdata. The training data sets can vary based on different tasks.

Since the inputted task descriptions 602 and historical task data 646are text-based and the content-based filtering and recommendationalgorithm works with numerical data, the inputted task descriptions 602and historical task data 646 are encoded and/or vectorized before beinginput to the ML layer 643 for training by the training component 644 andanalysis and classification by the classification component 645. In oneor more embodiments. one-hot encoding, word embedding and/or TermFrequency, Inverse Document Frequency (TF-IDF) encoding/vectorizationmay be used perform encoding and/or vectorization.

According to one or more embodiments, the ML layer 643 of the profileengine 640 creates a TF-IDF vectorizer of the task descriptions 602 andhistorical task data 646. TF-IDF is a numerical statistic in NLP thatreflects how important a word is to a document in a collection. Ingeneral, the TF-IDF algorithm is used to weigh a keyword in any documentand assign an importance to that keyword based on the number of timesthe keyword appears in the document. Each word or term has itsrespective TF and IDF score. The product of the TF and IDF scores of aterm is referred to as the TF-IDF weight of that term. The higher theTF-IDF weight (also referred to herein as “TF-IDF score”), the rarer andmore important the term, and vice versa. It is to be understood that theembodiments are not limited to the use of TF-IDF, and there arealternative methodologies for text vectorization.

In illustrative embodiments, the TF-IDF vectorizer is generated and usedto build one or more TF-IDF matrices, which include each word and itsTF-IDF score for each attribute in historical task data 646. Accordingto an embodiment, a TfidfVectorizer function from a SciKitLearn libraryis used to build the vectorizer.

When a user provides a task description 602 in connection with an issueor problem (e.g., task description 602), the description will be used tobuild another TF-IDF matrix based on the attributes in the description602. The TF-IDF matrices ignore stop words. The classification component645 uses a similarity distance algorithm between two generated TF-IDFmatrices to find matching attributes between the inputted taskdescription 602 and the historical data 646. The similarity functionsare as follows:tf=TfidfVectorizer(analyzer=‘word’;ngram_range=(1,3),min_df=0,stop_words=‘english’)df_attributes[‘all_content’]=df_attributes[‘operating_system’]+attributes_list[‘version_number’]+attributes_list[‘security_patch’]+attributes_list[‘resolution’]tfidf_all_content=tf_vectorizer.fit_transform(attributes_list[‘all_content’])

Once the TF-IDF score of all attributes is calculated, predictedprofiles (e.g., predicted profiles 648-1, 648-2 and 648-3) are generatedby the classification component 645. Although three predicted profilesare shown in FIG. 6 , the embodiments are not necessarily limitedthereto, and more or less predicted profiles can be generated inconnection with a given task description. The predicted profiles can begenerated using various machine learning techniques such as, forexample, similarity algorithms, support vector machines (SVMs), matrixfactorization and deep learning. According to one or more embodiments, asimilarity-based algorithm such as, for example, a cosine similarityalgorithm, a Euclidian distance algorithm and Pearson's correlationalgorithm, is used. In an illustrative embodiment, a Pearson'scorrelation algorithm is used. Pearson's correlation algorithm (alsoreferred to herein as “bi-variate correlation algorithm”) is astatistical algorithm to measure the linear correlation between twovariables. The variables in this case are attributes of inputted taskdescriptions 602 and attributes of historical task data 646. Pearson'scorrelation coefficient can vary between +1 and −1, where +1 is apositive linear correlation, −1 is a negative linear correlation, and 0represents no linear correlation. The formula (1) for Pearson'scorrelation is shown below.

$\begin{matrix}{{{Pearson}{}\left( {x,y} \right)} = \frac{{\sum{xy}} - \frac{\sum{x{\sum y}}}{N}}{\sqrt{\left( {{\sum x^{2}} - \frac{\left( {\sum x} \right)^{2}}{N}} \right)\left( {{\sum y^{2}} - \frac{\left( {\sum y} \right)^{2}}{N}} \right)}}} & (1)\end{matrix}$

In the formula (1), x and y represent data objects and N represents thenumber of attributes. FIG. 7 depicts example pseudocode 700 for profileprediction according to an illustrative embodiment. For theimplementation of the profile engine 140/240/640, Python language andSciKitLearn and NLTK libraries can be used.

Referring to FIG. 2 , the matching and routing engine 270 (which is thesame or similar to the matching and routing engine 170) assignsresources 203-1, 203-2, 203-3, . . . 203-P (collectively “resources203”) to tasks based on the outputs of the intent classification engine230, the profile engine 240 and the supporting attributes engine 260. Asnoted herein, the intent classification engine 230 (which is the same orsimilar to the intent classification engines 130 and 430) determines theintents of incoming tasks 202, the profile engine 240 (which is the sameor similar to the profile engines 140 and 640) uses historical taskinformation to determine parameters including, for example, type,urgency and severity of a task, and needed skills to complete a task,and the supporting attributes engine 260 (which is the same or similarto the supporting attributes engine 160) identifies supportingattributes associated with incoming tasks 202 such as, for example,language, region, country, etc. to be used when routing tasks 202 to theappropriate resource(s) 203. In connection with the supportingattributes, efficiency can be improved if resources are in the sameregion or country and speak the same language as a user.

The matching and routing engine 270 is configured to assign and routetasks 202 to various resources 203 based on the skills, proficiencies(e.g., certifications, documented proficiencies) and/or availabilitiesof the various resources 203, and whether the skills and/orproficiencies needed to complete a work item match with the skillsand/or proficiencies of the resources 203. The resources 203 include thesame or similar resources as those noted in connection with theresources 103, and may include, for example, technical support agents,field service engineers, deployment engineers, program/project managersand other type of resources utilized to perform and complete tasks.

As shown in FIG. 2 , the matching and routing engine 270 computes andassigns resources 203 to tasks 202 based on the inputs from the intentclassification, profile and supporting attributes engines 230, 240 and260. In one or more embodiments, the matching and routing engine 270routes tasks 202 to individual resources 203 or pools of resources 203using a routing algorithm that utilizes a combination of queue-basedrouting (QBR) and skill-based routing (SBR) (“SBR/QBR”). QBR is based onavailabilities of the resources 203 and SBR is based on skills and/orproficiencies of the resources 203 and how well the skills and/orproficiencies match with the skills and/or proficiencies needed toperform the tasks 202 identified by the profile engine 240. For example,the routing algorithm may specify use of QBR to route a given task toresources in one of a plurality of fallback queues (e.g., fallback queue1 290-1, fallback queue 2 290-2, fallback queue 3 290-3, . . . fallbackqueue-S 290-S (collectively “fallback queues 290”) in response to SBRfailing to route the given task to one of the resources 203 (“QBRFallback”). Although not shown, it is to be understood that the fallbackqueues 290 include resources similar to the resources 103 or 203.

When routing to the resources 203 using SBR (“SBR Assignment”) fails dueto, for example, unavailability of the resources 203, the resources 203do not accept the task or for other reasons, the routing algorithm mayattempt a specified number of iterations (e.g., “attempt X iterationsfor assignment”) to route the given task to a resource 203 using SBR. Ifa threshold number of iterations for repeating the routing using SBR ismet or a predetermined time for performing the iterations has elapsedwithout having assigned the given task 202 to a resource 203, thealgorithm may specify using QBR instead and route the task to one of theresources in the fallback queues 290. The resources in the fallbackqueues 290 are assigned without consideration of whether the resourcespossess the skills and/or proficiencies to perform and complete thegiven task.

In some embodiments, when selected resources 203 for receiving a giventask 202 are not available and routing to such resources 203 fails, therouting algorithm may reduce the number of parameters on which to basethe SBR so that more of the resources 203 may be available for selectionin an SBR scenario. For example, the profile engine 240 may determinethat a particular number of skills (e.g., five skills) is needed tocomplete a given task 202. However, the resources 203 having all fiveskills may not currently be available to complete the given task 202. Inthis case, the routing algorithm may eliminate one or more of the skillsto increase the population of resources 203 available for assignment ofthe given task 202. The reduction of the required skills for assigningresources in an SBR scenario can be performed until an availableresource is found or a threshold limiting the reduction to a certainnumber of skills is met.

In some embodiments, depending on the user and/or the nature of a task,the routing algorithm may require only SBR, and specify that QBR is notan option. This may be the case when the profile engine 240 determinesthat the task type requires highly skilled resources and cannot beperformed by an unskilled resource and/or the severity of the task ishigh.

In some embodiments, the routing algorithm may specify that certaintasks 202 be assigned to resources using only QBR (“QBR Assignment”),where the tasks are routed to a plurality of queues (e.g., queue 1280-1, queue 2 280-2, . . . queue-N 280-N (collectively “queues 280”).Although not shown, it is to be understood that the queues 280 includeresources similar to the resources 103 or 203. In the case of routingtasks 202 to resources using only QBR, the tasks 202 are routed toresources in the queues 280 based on availability of the resources andnot on the skills and/or proficiencies of the resources. The routingalgorithm may specify the QBR assignment of resources may be used whenthe profile engine 240 determines that the skills and/or proficienciesneeded to complete a given task are universal or do not meet a specifiedthreshold of complexity to permit assignment to any available resource.

The embodiments permit a routing algorithm used by the matching androuting engine 270 to be customizable to permit enterprises to specifyhow resources are assigned to tasks. For example, an enterprise canspecify resource assignment order. In some non-limiting examples, therouting algorithm may require attempting assignments of resources (i)from a most proficient/skilled resource to a least proficient/skilledresource; (ii) from a least proficient/skilled resource to a mostproficient/skilled resource; (iii) based on best match using standarddeviation; and/or (iv) based on a round-robin approach. In someembodiments, the routing algorithm attempts to assign tasks to the firstavailable resource with the highest number of skills to perform thetask. For example, if a resource is the best match for given task basedon the analysis by the intent classification, profile and supportingattributes engines 230, 240 and 260, but is unavailable, the algorithmmay specify that the task be routed to next best match that is availableto handle the task. In some embodiments, if a resource is suitable andavailable for multiple tasks, the resource can be assigned the task withwhich it has the best match of skills and proficiencies.

According to one or more embodiments, the matching and routing engine270 ranks the resources based on a computed resource score andprioritizes the resources for assignment based on the ranking. In one ormore embodiments, in connection with a given task, the resource score isbased on a number of skills possessed by a resource which match with theskills determined by the profile engine 240 to be required for the giventask. For example, the more matching skills a resource has, the higherthe resource score for that resource. In some embodiments, each skillcan be weighted according to the importance of the skill, where skillsconsidered to be more important for completing the given task and/oridentified has being given higher priority are given higher weights. Thematching and routing engine 270 computes resource score according one ormore of the following equations (2) and (3):ResourceScore=(Resource_Skill_1*Skill_1_Weight)+(Resource_Skill_2*Skill_2_Weight)+. . . (Resource_Skill_Z*Skill_Z_Weight)  (2)Resource Score=Resource_Skill_1+Resource_Skill_2+ . . . .Resource_Skill_Z  (3)

In equations (2) and (3) Resource_Skill represents a skill possessed bya resource which matches with the skills determined by the profileengine 240 to be required for a given task, and Z is an integer. Inequation (2), Skill_Weight represents a specified weight of thecorresponding skill.

According to an embodiment, the matching and routing engine 270 ranksresources 203 according to resource score from a highest resource scoreto a lowest resource score and, when using SBR, attempts to route agiven task 202 to the resource having the highest rank. If the resourcewith the highest rank is not available, the matching and routing engine270 attempts to route the task to the next highest ranking resource andso on. In some cases, the matching and routing engine 270 repeatedlyattempts to route the task to the highest ranking resource until thehighest ranking resource becomes available or a threshold number ofiterations for repeating the routing is met or a predetermined time forperforming the iterations has elapsed. After the threshold is met, thematching and routing engine 270 attempts to route the task to the nexthighest ranking resource. Routing and routing attempts to resources areperformed by an assignment workflow layer (e.g., assignment workflowlayer 120). In one or more embodiments, the matching and routing engine270 comprises an API to support external routing, can provide a list ofqualifying resources for a set of skills and/or attributes for aparticular channel, and a vertical or horizontal segment.

Referring to the operational flow 800 in FIG. 8 , at block 801, anincoming task through one or more the communication channels asdescribed herein is received and, at block 802, the intent, profile andsupporting attributes of the task are determined by the intentclassification, profile and supporting attributes engines.

The flow 800 in FIG. 8 illustrates routing to resources using QBR andSBR. In the QBR flow, at block 804, an available resource queue isidentified and selected or an available after business hours queue isselected. At blocks 805 and 806, the task is assigned to the selectedqueue and then assigned to a resource in the queue.

In the SBR flow, at blocks 814 and 815, resources with matching skillsto perform the task are identified and resource scores are calculatedfor the identified resources. At blocks 816 and 817, the resourceassignment algorithm ranks the resources according their resource scoresand attempts resource assignment based on the ranking. If the resourcefor which assignment is attempted is not available or accepting thetask, the flow returns to the ranking and attempts to assign the task tonext resource in the ranking.

According to one or more embodiments, databases, repositories (e.g.,repositories 150, 646), stores and/or corpuses (e.g., corpus 436) usedby the intelligent routing framework 110 can be configured according toa relational database management system (RDBMS) (e.g., PostgreSQL).Databases, repositories, stores and/or corpuses in some embodiments areimplemented using one or more storage systems or devices associated withthe intelligent routing framework 110. In some embodiments, one or moreof the storage systems utilized to implement the databases comprise ascale-out all-flash content addressable storage array or other type ofstorage array.

The term “storage system” as used herein is therefore intended to bebroadly construed, and should not be viewed as being limited to contentaddressable storage systems or flash-based storage systems. A givenstorage system as the term is broadly used herein can comprise, forexample, network-attached storage (NAS), storage area networks (SANs),direct-attached storage (DAS) and distributed DAS, as well ascombinations of these and other storage types, includingsoftware-defined storage.

Other particular types of storage products that can be used inimplementing storage systems in illustrative embodiments includeall-flash and hybrid flash storage arrays, software-defined storageproducts, cloud storage products, object-based storage products, andscale-out NAS clusters. Combinations of multiple ones of these and otherstorage products can also be used in implementing a given storage systemin an illustrative embodiment.

Although shown as elements of the intelligent routing framework 110, theassignment workflow layer 120, the intent classification engine 130, theprofile engine 140, the data repository 150, the supporting attributesengine 160 and the matching and routing engine 170 in other embodimentscan be implemented at least in part externally to the intelligentrouting framework 110, for example, as stand-alone servers, sets ofservers or other types of systems coupled to the network 104. Forexample, the assignment workflow layer 120, the intent classificationengine 130, the profile engine 140, the data repository 150, thesupporting attributes engine 160 and/or the matching and routing engine170 may be provided as cloud services accessible by the intelligentrouting framework 110.

The assignment workflow layer 120, the intent classification engine 130,the profile engine 140, the data repository 150, the supportingattributes engine 160 and the matching and routing engine 170 in theFIG. 1 embodiment are each assumed to be implemented using at least oneprocessing device. Each such processing device generally comprises atleast one processor and an associated memory, and implements one or morefunctional modules for controlling certain features of the assignmentworkflow layer 120, the intent classification engine 130, the profileengine 140, the data repository 150, the supporting attributes engine160 and/or the matching and routing engine 170.

At least portions of the intelligent routing framework 110 and thecomponents thereof may be implemented at least in part in the form ofsoftware that is stored in memory and executed by a processor. Theintelligent routing framework 110 and the components thereof comprisefurther hardware and software required for running the intelligentrouting framework 110, including, but not necessarily limited to,on-premises or cloud-based centralized hardware, graphics processingunit (GPU) hardware, virtualization infrastructure software andhardware, Docker containers, networking software and hardware, and cloudinfrastructure software and hardware.

Although the assignment workflow layer 120, the intent classificationengine 130, the profile engine 140, the data repository 150, thesupporting attributes engine 160, the matching and routing engine 170and other components of the intelligent routing framework 110 in thepresent embodiment are shown as part of the intelligent routingframework 110, at least a portion of the assignment workflow layer 120,the intent classification engine 130, the profile engine 140, the datarepository 150, the supporting attributes engine 160, the matching androuting engine 170 and other components of the intelligent routingframework 110 in other embodiments may be implemented on one or moreother processing platforms that are accessible to the intelligentrouting framework 110 over one or more networks. Such components caneach be implemented at least in part within another system element or atleast in part utilizing one or more stand-alone components coupled tothe network 104.

It is assumed that the intelligent routing framework 110 in the FIG. 1embodiment and other processing platforms referred to herein are eachimplemented using a plurality of processing devices each having aprocessor coupled to a memory. Such processing devices canillustratively include particular arrangements of compute, storage andnetwork resources. For example, processing devices in some embodimentsare implemented at least in part utilizing virtual resources such asvirtual machines (VMs) or Linux containers (LXCs), or combinations ofboth as in an arrangement in which Docker containers or other types ofLXCs are configured to run on VMs.

The term “processing platform” as used herein is intended to be broadlyconstrued so as to encompass, by way of illustration and withoutlimitation, multiple sets of processing devices and one or moreassociated storage systems that are configured to communicate over oneor more networks.

As a more particular example, the assignment workflow layer 120, theintent classification engine 130, the profile engine 140, the datarepository 150, the supporting attributes engine 160, the matching androuting engine 170 and other components of the intelligent routingframework 110, and the elements thereof can each be implemented in theform of one or more LXCs running on one or more VMs. Other arrangementsof one or more processing devices of a processing platform can be usedto implement the assignment workflow layer 120, the intentclassification engine 130, the profile engine 140, the data repository150, the supporting attributes engine 160 and the matching and routingengine 170, as well as other components of the intelligent routingframework 110. Other portions of the system 100 can similarly beimplemented using one or more processing devices of at least oneprocessing platform.

Distributed implementations of the system 100 are possible, in whichcertain components of the system reside in one datacenter in a firstgeographic location while other components of the system reside in oneor more other data centers in one or more other geographic locationsthat are potentially remote from the first geographic location. Thus, itis possible in some implementations of the system 100 for differentportions of the intelligent routing framework 110 to reside in differentdata centers. Numerous other distributed implementations of theintelligent routing framework 110 are possible.

Accordingly, one or each of the assignment workflow layer 120, theintent classification engine 130, the profile engine 140, the datarepository 150, the supporting attributes engine 160, the matching androuting engine 170 and other components of the intelligent routingframework 110 can each be implemented in a distributed manner so as tocomprise a plurality of distributed components implemented on respectiveones of a plurality of compute nodes of the intelligent routingframework 110.

It is to be appreciated that these and other features of illustrativeembodiments are presented by way of example only, and should not beconstrued as limiting in any way.

Accordingly, different numbers, types and arrangements of systemcomponents such as the assignment workflow layer 120, the intentclassification engine 130, the profile engine 140, the data repository150, the supporting attributes engine 160, the matching and routingengine 170 and other components of the intelligent routing framework110, and the elements thereof can be used in other embodiments.

It should be understood that the particular sets of modules and othercomponents implemented in the system 100 as illustrated in FIG. 1 arepresented by way of example only. In other embodiments, only subsets ofthese components, or additional or alternative sets of components, maybe used, and such components may exhibit alternative functionality andconfigurations.

For example, as indicated previously, in some illustrative embodiments,functionality for the intelligent routing framework can be offered tocloud infrastructure customers or other users as part of FaaS, CaaSand/or PaaS offerings.

The operation of the information processing system 100 will now bedescribed in further detail with reference to the flow diagram of FIG. 9. With reference to FIG. 9 , a process 900 for analyzing incoming tasksand routing the tasks to resources as shown includes steps 902 through910, and is suitable for use in the system 100 but is more generallyapplicable to other types of information processing systems comprisingan intelligent routing framework configured for analyzing incoming tasksand routing the tasks to resources.

In step 902, at least one natural language input corresponding to atleast one task is received. In step 904, the at least one naturallanguage input is analyzed using one or more machine learning models todetermine one or more parameters of the at least one task. In anembodiment, the one or more parameters comprise an intent of the atleast one task, and the analyzing comprises performing NLU processingusing one or more neural networks to classify the intent of the at leastone task.

In step 906, at least one of one or more skills and availabilities ofrespective ones of a plurality of resources are identified. In step 908,at least a subset of the plurality of resources to perform the at leastone task based is identified. The identification of the subset is basedat least in part on the one or more parameters and on the at least oneof the one or more skills and availabilities.

In step 910, the at least one task is routed to one or more resources ofthe subset. The routing of the at least one task is based at least inpart on a customizable routing algorithm utilizing a combination of QBRbased on availabilities of respective ones of resources in the subsetand

SBR based on one or more skills of the respective ones of the resourcesin the subset. The customizable routing algorithm specifies use of QBRto route the at least one task to the one or more resources of thesubset responsive to SBR failing to route the at least one task to theone or more resources of the subset. In one or more embodiments, thecustomizable routing algorithm reduces a number of the parameters onwhich to base the identification of the subset responsive tounavailability of the one or more resources of the subset.

In an embodiment, the one or more parameters comprise one or more skillsneeded to perform the at least one task, and the analyzing comprisescomparing the at least one natural language input to a plurality ofhistorical tasks, and matching the at least one natural language inputwith one or more of the plurality of historical tasks to determine theone or more skills needed to perform the at least one task. The matchingis performed using a content-based filtering and recommendation machinelearning algorithm comprising a bi-variate correlation algorithm.

In an embodiment, the one or more parameters comprise at least one of aseverity and an urgency of the at least one task, and the analyzingcomprises comparing the at least one natural language input to aplurality of historical tasks, matching the at least one naturallanguage input with one or more of the plurality of historical tasks,and determining at least one of a number of occurrences of and a time tocomplete the one or more of the plurality of historical tasks. Theseverity and/or the urgency are based at least in part on the number ofoccurrences of and/or the time to complete the one or more of theplurality of historical tasks.

In an embodiment, the one or more parameters comprise one or more skillsneeded to perform the at least one task, and respective ones ofresources in the subset comprise one or more skills matching with theone or more skills needed to perform the at least one task. A resourcescore for the respective ones of resources in the subset is computedbased at least in part on a number of the one or more skills matchingwith the one or more skills needed to perform the at least one task. Theresources in the subset are ranked based at least in part on thecomputed resource scores.

In an embodiment, the routing of the at least one task comprises routingthe at least one task to a highest ranking resource in the subset havinga highest computed resource score. The process may further comprisedetermining that the highest ranking resource is not available, androuting the at least one task to another resource in the subset havingan equal or next highest ranking and/or repeating the routing of the atleast one task to the highest ranking resource until the highest rankingresource becomes available or a threshold number of iterations forrepeating the routing is met.

It is to be appreciated that the FIG. 9 process and other features andfunctionality described above can be adapted for use with other types ofinformation systems configured to execute task routing services in anintelligent routing framework or other type of platform.

The particular processing operations and other system functionalitydescribed in conjunction with the flow diagram of FIG. 9 are thereforepresented by way of illustrative example only, and should not beconstrued as limiting the scope of the disclosure in any way.Alternative embodiments can use other types of processing operations.For example, the ordering of the process steps may be varied in otherembodiments, or certain steps may be performed at least in partconcurrently with one another rather than serially. Also, one or more ofthe process steps may be repeated periodically, or multiple instances ofthe process can be performed in parallel with one another.

Functionality such as that described in conjunction with the flowdiagram of FIG. 9 can be implemented at least in part in the form of oneor more software programs stored in memory and executed by a processorof a processing device such as a computer or server. As will bedescribed below, a memory or other storage device having executableprogram code of one or more software programs embodied therein is anexample of what is more generally referred to herein as a“processor-readable storage medium.”

Illustrative embodiments of systems with an intelligent routingframework as disclosed herein can provide a number of significantadvantages relative to conventional arrangements. For example, unlikeconventional techniques, the embodiments advantageously use machinelearning techniques to analyze incoming natural language inputs androute tasks to appropriate resources. The framework includespre-processing capabilities to compute intent and types of tasks, aswell as the skills and proficiencies needed to perform the tasks. Thecomputed parameters are input to a routing and matching engineconfigured to perform optimal matching of resources to the work items.The framework capabilities are pluggable, such that external systems orAPIs that can process tasks to extract the parameters can work with theframework.

Conventional approaches rely on non-standardized, separate assignmentsystems, which create hindrances to resource optimization goals in anenterprise, and result in redundant implementation of the samecapabilities. The conventional techniques cause inaccurate and unevenresource assignments due to the use of multiple systems withheterogeneous rules. As a result, long-term operational costs areincurred and non-standard architectures are proliferated. Unlikeconventional approaches, the intelligent routing framework provides formanagement of resources in a centralized system, thus allowing theoptimization across an enterprise. The centralized system classifiesvarious tasks, and assigns resources to the tasks based on variousoptimized matching parameters.

Advantageously, the embodiments provide a scalable and flexibleframework that supports a hybrid model of QBR and SBR based resourceassignment, as well as exact and partial matching of resource skills andother attributes with tasks. The embodiments further allow forcustomizable routing algorithms and resource score computation andranking, and support different communication channels (e.g., chat,email, online portals, voice and social media). The framework includescomponents that can derive the intents and types of the tasks using NLPalgorithms and neural networks. As an additional advantage, theframework also includes components that can derive task profilesincluding needed skills and proficiencies and determine task urgency,severity and type based on historical task data. A profile engineutilizes a machine learning model trained with the historical tasks thatresulted in successful outcomes.

It is to be appreciated that the particular advantages described aboveand elsewhere herein are associated with particular illustrativeembodiments and need not be present in other embodiments. Also, theparticular types of information processing system features andfunctionality as illustrated in the drawings and described above areexemplary only, and numerous other arrangements may be used in otherembodiments.

As noted above, at least portions of the information processing system100 may be implemented using one or more processing platforms. A givensuch processing platform comprises at least one processing devicecomprising a processor coupled to a memory. The processor and memory insome embodiments comprise respective processor and memory elements of avirtual machine or container provided using one or more underlyingphysical machines. The term “processing device” as used herein isintended to be broadly construed so as to encompass a wide variety ofdifferent arrangements of physical processors, memories and other devicecomponents as well as virtual instances of such components. For example,a “processing device” in some embodiments can comprise or be executedacross one or more virtual processors. Processing devices can thereforebe physical or virtual and can be executed across one or more physicalor virtual processors. It should also be noted that a given virtualdevice can be mapped to a portion of a physical one.

Some illustrative embodiments of a processing platform that may be usedto implement at least a portion of an information processing systemcomprise cloud infrastructure including virtual machines and/orcontainer sets implemented using a virtualization infrastructure thatruns on a physical infrastructure. The cloud infrastructure furthercomprises sets of applications running on respective ones of the virtualmachines and/or container sets.

These and other types of cloud infrastructure can be used to providewhat is also referred to herein as a multi-tenant environment. One ormore system components such as the intelligent routing framework 110 orportions thereof are illustratively implemented for use by tenants ofsuch a multi-tenant environment.

As mentioned previously, cloud infrastructure as disclosed herein caninclude cloud-based systems. Virtual machines provided in such systemscan be used to implement at least portions of one or more of a computersystem and an intelligent routing framework in illustrative embodiments.These and other cloud-based systems in illustrative embodiments caninclude object stores.

Illustrative embodiments of processing platforms will now be describedin greater detail with reference to FIGS. 10 and 11 . Although describedin the context of system 100, these platforms may also be used toimplement at least portions of other information processing systems inother embodiments.

FIG. 10 shows an example processing platform comprising cloudinfrastructure 1000. The cloud infrastructure 1000 comprises acombination of physical and virtual processing resources that may beutilized to implement at least a portion of the information processingsystem 100. The cloud infrastructure 1000 comprises multiple virtualmachines (VMs) and/or container sets 1002-1, 1002-2, . . . 1002-Limplemented using virtualization infrastructure 1004. The virtualizationinfrastructure 1004 runs on physical infrastructure 1005, andillustratively comprises one or more hypervisors and/or operating_systemlevel virtualization infrastructure. The operating_system levelvirtualization infrastructure illustratively comprises kernel controlgroups of a Linux operating system or other type of operating_system.

The cloud infrastructure 1000 further comprises sets of applications1010-1, 1010-2, . . . 1010-L running on respective ones of theVMs/container sets 1002-1, 1002-2, . . . 1002-L under the control of thevirtualization infrastructure 1004. The VMs/container sets 1002 maycomprise respective VMs, respective sets of one or more containers, orrespective sets of one or more containers running in VMs.

In some implementations of the FIG. 10 embodiment, the VMs/containersets 1002 comprise respective VMs implemented using virtualizationinfrastructure 1004 that comprises at least one hypervisor. A hypervisorplatform may be used to implement a hypervisor within the virtualizationinfrastructure 1004, where the hypervisor platform has an associatedvirtual infrastructure management system. The underlying physicalmachines may comprise one or more distributed processing platforms thatinclude one or more storage systems.

In other implementations of the FIG. 10 embodiment, the VMs/containersets 1002 comprise respective containers implemented usingvirtualization infrastructure 1004 that provides operating_system levelvirtualization functionality, such as support for Docker containersrunning on bare metal hosts, or Docker containers running on VMs. Thecontainers are illustratively implemented using respective kernelcontrol groups of the operating_system.

As is apparent from the above, one or more of the processing modules orother components of system 100 may each run on a computer, server,storage device or other processing platform element. A given suchelement may be viewed as an example of what is more generally referredto herein as a “processing device.” The cloud infrastructure 1000 shownin FIG. 10 may represent at least a portion of one processing platform.Another example of such a processing platform is processing platform1100 shown in FIG. 11 .

The processing platform 1100 in this embodiment comprises a portion ofsystem 100 and includes a plurality of processing devices, denoted1102-1, 1102-2, 1102-3, . . . 1102-K, which communicate with one anotherover a network 1104.

The network 1104 may comprise any type of network, including by way ofexample a global computer network such as the Internet, a WAN, a LAN, asatellite network, a telephone or cable network, a cellular network, awireless network such as a WiFi or WiMAX network, or various portions orcombinations of these and other types of networks.

The processing device 1102-1 in the processing platform 1100 comprises aprocessor 1110 coupled to a memory 1112. The processor 1110 may comprisea microprocessor, a microcontroller, an application-specific integratedcircuit (ASIC), a field-programmable gate array (FPGA), a centralprocessing unit (CPU), a graphical processing unit (GPU), a tensorprocessing unit (TPU), a video processing unit (VPU) or other type ofprocessing circuitry, as well as portions or combinations of suchcircuitry elements.

The memory 1112 may comprise random access memory (RAM), read-onlymemory (ROM), flash memory or other types of memory, in any combination.The memory 1112 and other memories disclosed herein should be viewed asillustrative examples of what are more generally referred to as“processor-readable storage media” storing executable program code ofone or more software programs.

Articles of manufacture comprising such processor-readable storage mediaare considered illustrative embodiments. A given such article ofmanufacture may comprise, for example, a storage array, a storage diskor an integrated circuit containing RAM, ROM, flash memory or otherelectronic memory, or any of a wide variety of other types of computerprogram products. The term “article of manufacture” as used hereinshould be understood to exclude transitory, propagating signals.Numerous other types of computer program products comprisingprocessor-readable storage media can be used.

Also included in the processing device 1102-1 is network interfacecircuitry 1114, which is used to interface the processing device withthe network 1104 and other system components, and may compriseconventional transceivers.

The other processing devices 1102 of the processing platform 1100 areassumed to be configured in a manner similar to that shown forprocessing device 1102-1 in the figure.

Again, the particular processing platform 1100 shown in the figure ispresented by way of example only, and system 100 may include additionalor alternative processing platforms, as well as numerous distinctprocessing platforms in any combination, with each such platformcomprising one or more computers, servers, storage devices or otherprocessing devices.

For example, other processing platforms used to implement illustrativeembodiments can comprise converged infrastructure.

It should therefore be understood that in other embodiments differentarrangements of additional or alternative elements may be used. At leasta subset of these elements may be collectively implemented on a commonprocessing platform, or each such element may be implemented on aseparate processing platform.

As indicated previously, components of an information processing systemas disclosed herein can be implemented at least in part in the form ofone or more software programs stored in memory and executed by aprocessor of a processing device. For example, at least portions of thefunctionality of one or more components of the intelligent routingframework 110 as disclosed herein are illustratively implemented in theform of software running on one or more processing devices.

It should again be emphasized that the above-described embodiments arepresented for purposes of illustration only. Many variations and otheralternative embodiments may be used. For example, the disclosedtechniques are applicable to a wide variety of other types ofinformation processing systems and intelligent routing frameworks. Also,the particular configurations of system and device elements andassociated processing operations illustratively shown in the drawingscan be varied in other embodiments. Moreover, the various assumptionsmade above in the course of describing the illustrative embodimentsshould also be viewed as exemplary rather than as requirements orlimitations of the disclosure. Numerous other alternative embodimentswithin the scope of the appended claims will be readily apparent tothose skilled in the art.

What is claimed is:
 1. A method comprising: receiving at least onenatural language input corresponding to at least one task; analyzing theat least one natural language input using one or more machine learningmodels to determine one or more parameters of the at least one task;identifying at least one of one or more skills and availabilities ofrespective ones of a plurality of resources, wherein the plurality ofresources comprise a plurality of computing resources; identifying atleast a subset of the plurality of resources to perform the at least onetask based at least in part on the one or more parameters and on the atleast one of the one or more skills and the availabilities; and routingthe at least one task to one or more resources of the subset, whereinthe routing comprises: transmitting the at least one task to a firstcomputing resource of the one or more resources via one or moreapplication programming interfaces, wherein the at least one task istransmitted with one or more requests for a computing resource receivingthe at least one task to execute one or more computing operationsassociated with the at least one task; determining whether the routingof the at least one task to the first computing resource has failed;identifying a second computing resource of the one or more resources towhich to route the at least one task in response to determining that therouting of the at least one task to the first computing resource hasfailed; and transmitting the at least one task with the one or morerequests to the second computing resource via the one or moreapplication programming interfaces; wherein the one or more parameterscomprise at least an intent of the at least one task and one or moreskills needed to perform the at least one task; wherein the analyzingcomprises: performing natural language processing using one or moreneural networks to classify the intent of the at least one task; andusing a content-based machine learning algorithm to compare the at leastone natural language input to a plurality of historical tasks, and tomatch the at least one natural language input with one or more of theplurality of historical tasks to determine the one or more skills neededto perform the at least one task; wherein the routing further comprisesinputting at least a result of classifying the intent of the at leastone task and the one or more skills needed to perform the at least onetask to a routing engine, the routing engine routing the at least onetask to the one or more resources of the subset based at least in parton the result of classifying the intent of the at least one task and theone or more skills needed to perform the at least one task; and whereinthe steps of the method are executed by a processing device operativelycoupled to a memory.
 2. The method of claim 1 wherein: the routing ofthe at least one task is based at least in part on a customizablerouting algorithm; and the customizable routing algorithm utilizes acombination of queue-based routing based on availabilities of respectiveones of resources in the subset and skill-based routing based on one ormore skills of the respective ones of the resources in the subset. 3.The method of claim 2 wherein the customizable routing algorithmspecifies use of the queue-based routing to route the at least one taskto the one or more resources of the subset responsive to the skill-basedrouting failing to route the at least one task to the one or moreresources of the subset.
 4. The method of claim 1 wherein: the routingof the at least one task is based at least in part on a customizablerouting algorithm; and the customizable routing algorithm reduces anumber of the parameters on which to base the identification of thesubset responsive to unavailability of the one or more resources of thesub set.
 5. The method of claim 1 wherein the content-based machinelearning algorithm comprises a content-based filtering andrecommendation machine learning algorithm.
 6. The method of claim 5wherein the content-based filtering and recommendation machine learningalgorithm comprises a bi-variate correlation algorithm.
 7. The method ofclaim 1 wherein: the one or more parameters further comprise at leastone of a severity and an urgency of the at least one task; and theanalyzing comprises: matching the at least one natural language inputwith additional ones of the plurality of historical tasks; anddetermining at least one of a number of occurrences of and a time tocomplete the additional ones of the plurality of historical tasks,wherein at least one of the severity and the urgency are based at leastin part on at least one of the number of occurrences of and the time tocomplete the one or more of the plurality of historical tasks.
 8. Themethod of claim 1 wherein respective ones of resources in the subsetcomprise one or more skills matching with the one or more skills neededto perform the at least one task.
 9. The method of claim 8 furthercomprising: computing a resource score for the respective ones ofresources in the subset based at least in part on a number of the one ormore skills matching with the one or more skills needed to perform theat least one task; and ranking the resources in the subset based atleast in part on the computed resource scores.
 10. The method of claim 9wherein the routing of the at least one task comprises routing the atleast one task to a highest ranking resource in the subset having ahighest computed resource score.
 11. The method of claim 10 wherein therouting of the at least one task further comprises: determining that thehighest ranking resource is not available; and routing the at least onetask to another resource in the subset having an equal or next highestranking.
 12. The method of claim 10 wherein the routing of the at leastone task further comprises: determining that the highest rankingresource is not available; and repeating the routing of the at least onetask to the highest ranking resource until the highest ranking resourcebecomes available or a threshold number of iterations for repeating therouting is met.
 13. An apparatus comprising: a processing deviceoperatively coupled to a memory and configured: to receive at least onenatural language input corresponding to at least one task; to analyzethe at least one natural language input using one or more machinelearning models to determine one or more parameters of the at least onetask; to identify at least one of one or more skills and availabilitiesof respective ones of a plurality of resources, wherein the plurality ofresources comprise a plurality of computing resources; to identify atleast a subset of the plurality of resources to perform the at least onetask based at least in part on the one or more parameters and on the atleast one of the one or more skills and the availabilities; and to routethe at least one task to one or more resources of the subset, wherein,in routing the at least one task to the one or more resources, theprocessing device is configured: to transmit the at least one task to afirst computing resource of the one or more resources via one or moreapplication programming interfaces, wherein the at least one task istransmitted with one or more requests for a computing resource receivingthe at least one task to execute one or more computing operationsassociated with the at least one task; to determine whether the routingof the at least one task to the first computing resource has failed; toidentify a second computing resource of the one or more resources towhich to route the at least one task in response to determining that therouting of the at least one task to the first computing resource hasfailed; and to transmit the at least one task with the one or morerequests to the second computing resource via the one or moreapplication programming interfaces, wherein the one or more parameterscomprise at least an intent of the at least one task and one or moreskills needed to perform the at least one task; wherein the analyzingcomprises: performing natural language processing using one or moreneural networks to classify the intent of the at least one task; andusing a content-based machine learning algorithm to compare the at leastone natural language input to a plurality of historical tasks, and tomatch the at least one natural language input with one or more of theplurality of historical tasks to determine the one or more skills neededto perform the at least one task: and wherein, in routing the at leastone task to the one or more resources, the processing device is furtherconfigured to input at least a result of classifying the intent of theat least one task and the one or more skills needed to perform the atleast one task to a routing engine, the routing engine routing the atleast one task to the one or more resources of the subset based at leastin part on the result of classifying the intent of the at least one taskand the one or more skills needed to perform the at least one task. 14.The apparatus of claim 13 wherein: the routing of the at least one taskis based at least in part on a customizable routing algorithm; and thecustomizable routing algorithm utilizes a combination of queue-basedrouting based on availabilities of respective ones of resources in thesubset and skill-based routing based on one or more skills of therespective ones of the resources in the subset.
 15. The apparatus ofclaim 14 wherein the customizable routing algorithm specifies use of thequeue-based routing to route the at least one task to the one or moreresources of the subset responsive to the skill-based routing failing toroute the at least one task to the one or more resources of the subset.16. The apparatus of claim 13 wherein: the routing of the at least onetask is based at least in part on a customizable routing algorithm; andthe customizable routing algorithm reduces a number of the parameters onwhich to base the identification of the subset responsive tounavailability of the one or more resources of the sub set.
 17. Anarticle of manufacture comprising a non-transitory processor-readablestorage medium having stored therein program code of one or moresoftware programs, wherein the program code when executed by at leastone processing device causes said at least one processing device toperform the steps of: receiving at least one natural language inputcorresponding to at least one task; analyzing the at least one naturallanguage input using one or more machine learning models to determineone or more parameters of the at least one task; identifying at leastone of one or more skills and availabilities of respective ones of aplurality of resources, wherein the plurality of resources comprise aplurality of computing resources; identifying at least a subset of theplurality of resources to perform the at least one task based at leastin part on the one or more parameters and on the at least one of the oneor more skills and the availabilities; and routing the at least one taskto one or more resources of the subset, wherein, in routing the at leastone task to the one or more resources, the program code causes said atleast one processing device to perform the steps of: transmitting the atleast one task to a first computing resource of the one or moreresources via one or more application programming interfaces, whereinthe at least one task is transmitted with one or more requests for acomputing resource receiving the at least one task to execute one ormore computing operations associated with the at least one task;determining whether the routing of the at least one task to the firstcomputing resource has failed; identifying a second computing resourceof the one or more resources to which to route the at least one task inresponse to determining that the routing of the at least one task to thefirst computing resource has failed; and transmitting the at least onetask with the one or more requests to the second computing resource viathe one or more application programming interfaces; wherein the one ormore parameters comprise at least an intent of the at least one task andone or more skills needed to perform the at least one task; wherein theanalyzing comprises: performing natural language processing using one ormore neural networks to classify the intent of the at least one task;and using a content-based machine learning algorithm to compare the atleast one natural language input to a plurality of historical tasks, andto match the at least one natural language input with one or more of theplurality of historical tasks to determine the one or more skills neededto perform the at least one task; and wherein, in routing the at leastone task to the one or more resources, the program code further causessaid at least one processing device to perform the step of inputting atleast a result of classifying the intent of the at least one task andthe one or more skills needed to perform the at least one task to arouting engine, the routing engine routing the at least one task to theone or more resources of the subset based at least in part on the resultof classifying the intent of the at least one task and the one or moreskills needed to perform the at least one task.
 18. The article ofmanufacture of claim 17 wherein: the routing of the at least one task isbased at least in part on a customizable routing algorithm; and thecustomizable routing algorithm utilizes a combination of queue-basedrouting based on availabilities of respective ones of resources in thesubset and skill-based routing based on one or more skills of therespective ones of the resources in the subset.
 19. The article ofmanufacture of claim 17 wherein respective ones of resources in thesubset comprise one or more skills matching with the one or more skillsneeded to perform the at least one task.
 20. The article of manufactureof claim 19 wherein the program code further causes said at least oneprocessing device to perform the steps of: computing a resource scorefor the respective ones of resources in the subset based at least inpart on a number of the one or more skills matching with the one or moreskills needed to perform the at least one task; and ranking theresources in the subset based at least in part on the computed resourcescores.